#ifndef ENCODER_H  
#define ENCODER_H 

#include <ros/ros.h>  
#include <std_msgs/String.h>  

class Veh_Node  
{  
public:  
    // 构造函数，接受节点名称作为参数  
    Veh_Node(); // 使用节点名称初始化NodeHandle  
  
    // 一个成员函数，用于发布消息  
    void publishMessage(const std::string& message);
    void vel_callback()
    void run();
  
private:  
    ros::NodeHandle nh_; // NodeHandle对象，用于与ROS系统交互  
    // std::string nodeName_; // 节点名称  
    ros::Subscriber cmd_vel_sub;
    ros::Publisher pub_; // 发布者对象，用于发布消息  
};

struct MyMessage
{
    // CAN 模块 切换  AT模式
    std::string command = "AT+AT\r\n";
    // 操作模式
    std::vector<uint8_t> data0 = {0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0D, 0x0A};

    // 3号速度模式
    std::vector<uint8_t> data1_1 = {0x41, 0x54, 0xC0, 0x60, 0x00, 0x00, 0x08, 0x2F, 0x60, 0x60, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x0A};
    // 3号使能
    std::vector<uint8_t> data1_2 = {0x41, 0x54, 0xC0, 0x60, 0x00, 0x00, 0x08, 0x2B, 0x40, 0x60, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0D, 0x0A};

    // 4号速度模式
    std::vector<uint8_t> data2_1 = {0x41, 0x54, 0xC0, 0x80, 0x00, 0x00, 0x08, 0x2F, 0x60, 0x60, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x0A};
    // 4号使能
    std::vector<uint8_t> data2_2 = {0x41, 0x54, 0xC0, 0x80, 0x00, 0x00, 0x08, 0x2B, 0x40, 0x60, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0D, 0x0A};

    // 3号右轮
    std::vector<uint8_t> data1_3 = {0x41, 0x54, 0xC0, 0x60, 0x00, 0x00, 0x08, 0x23, 0xFF, 0x60, 0x00};
    // 4号左轮
    std::vector<uint8_t> data2_3 = {0x41, 0x54, 0xC0, 0x80, 0x00, 0x00, 0x08, 0x23, 0xFF, 0x60, 0x00};

    // 3号轮速度读取
    std::vector<uint8_t> data1_4 = {0x41, 0x54, 0xC0, 0x60, 0x00, 0x00, 0x08, 0x40, 0x69, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0A};
    // 4号轮速度读取
    std::vector<uint8_t> data2_4 = {0x41, 0x54, 0xC0, 0x80, 0x00, 0x00, 0x08, 0x40, 0x69, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0A};

    std::vector<uint8_t> data_vel_read_conbin = {0x41, 0x54, 0xC0, 0x60, 0x00, 0x00, 0x08, 0x40, 0x69, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0A, 0x41, 0x54, 0xC0, 0x80, 0x00, 0x00, 0x08, 0x40, 0x69, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0A};
};

#endif